package com.bcw.springtest.bean;

import com.bcw.springtest.config.BcwRequestResponseMappingHandlerAdapter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.FormContentFilter;

@Configuration
public class CommonConfiguration {

    @Bean
    public AcmeProperties buildAcmeProperties() {
        return new AcmeProperties();
    }

    /**
     * 接口返回结果统一封装
     *
     * @return
     */
    @Bean
    public BcwRequestResponseMappingHandlerAdapter modify() {
        return new BcwRequestResponseMappingHandlerAdapter();
    }

    /**
     * @return FormContentFilter
     * HttpPutFormContentFilter
     * 由HiddenHttpMethodFilter可知，html中的form的method值只能为post或get，我们可以通过HiddenHttpMethodFilter获取put表单中的参数键值对，而在Spring3中获取put表单的参数键值对还有另一种方法，即使用HttpPutFormContentFilter过滤器。
     * HttpPutFormContentFilter过滤器的作为就是获取put表单的值，并将之传递到Controller中标注了method为RequestMethod.put的方法中。
     * 与HiddenHttpMethodFilter不同，在form中不用添加参数名为_method的隐藏域，且method不必是post，直接写成put，但该过滤器只能接受enctype值为application/x-www-form-urlencoded的表单，也就是说，在使用该过滤器时，form表单的代码必须如下：
     * <form action="" method="put" enctype="application/x-www-form-urlencoded">
     */
//    @Bean
//    public HiddenHttpMethodFilter HiddenHttpMethodFilter() {
//        return new HiddenHttpMethodFilter();
//    }

    /**
     * 兼容html form put、delete、patch请求
     * @return FormContentFilter
     */
    @Bean
    public FormContentFilter formContentFilter() {
        return new FormContentFilter();
    }

}
